#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<signal.h>
#include<sys/wait.h>

void func(int sig){
    //当能调到该函数，说明子进程退出了
    printf("sig is %d\n", sig);
    //wait等到的时候一定不会阻塞，因为子进程退出
    wait(NULL);
}
int main(){
    pid_t pid = fork();
    if(pid < 0){
        perror("fork");
    }else if(pid == 0){
        //child
        sleep(5);
        exit(1);
    }else{
        //father
        //这样就解放了父进程，不用阻塞了
        signal(SIGCHLD, func);
        while(1){
            printf("i am father\n");
            sleep(1);
        }
    }
    return 0;
}
